package com.xz.realdemo;

import com.xz.realdemo.factory.DatabaseFactory;
import com.xz.realdemo.model.Connection;
import com.xz.realdemo.model.Statement;
import com.xz.realdemo.util.XMLUtil;

import javax.xml.crypto.Data;

/**
 * @author 张志航     
 * @version V1.0.0
 * @projectName design_mode
 * @title     Client   
 * @package    com.xz.realdemo  
 * @date   2019/11/27 11:29  
 * @explain
 */
public class Client {


    /**
     * 需求：
     *      为了改进数据库的操作性能，用户可以自定义数据库连接对象（Condition）和语句对象（Statement），针对不同的数据库
     *      提供不同的连接对象和语句对象，例如提供mysql和oracle专用的连接类和语句类，而且用户可以通过配置文件来更换数据库。
     *  分析：
     *      需要Mysql与Oracle的具体连接对象、语句对象实现类，提供工厂创建一类的产品族，同时应当可以重载更换连接信息
     * @param args
     */
    public static void main(String[] args) {

        Object bean = XMLUtil.getBean();
        if (bean != null && bean instanceof DatabaseFactory){
            DatabaseFactory factory = (DatabaseFactory) bean;
            Connection connection = factory.createConnection("129.0.0.1","8080");
            Statement statement = factory.createStatement();
            connection.connectDatabase();
            statement.query();
        }
    }
}
